- 几种同步方式
几种同步方式
1.cudaDeviceSynchronize();
2.cudaThreadSynchronize();
3.cudaStreamSynchronize();
cudaDeviceSynchronize()
会阻塞当前程序的执行,直到所有任务都处理完毕(这里的任务其实就是指的是所有的线程都已经执行完了kernel function)不推荐使用,如果程序中真的需要做同步操作,推荐使用udaThreadSynchronize()
的功能和cudaDeviceSynchronize()
基本上一样,这个函数在新版本的cuda中已经被“废弃”了,cudaDeviceSynchronize()
。cudaStreamSynchronize()
和上面的两个函数类似,这个函数带有一个参数,cuda流ID,它只阻塞那些cuda流ID等于参数中指定ID的那些cuda例程,对于那些流ID不等的例程,还是异步执行的。